home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-05-22 | 8.0 KB | 133 lines | [TEXT/ttxt] |
- This file reports the timing and accuracy of all your video screens, as
- measured by TimeVideo, a component of the VideoToolbox. To quickly test a
- large number of computers, run TimeVideo from a floppy disk; all the results
- will accumulate in a single results file.
-
- THE VIDEO TOOLBOX
- The VideoToolbox is a collection of two hundred C subroutines and several demo
- and utility programs that I and others have written to do visual psychophysics
- with Macintosh computers. It is fully compatible with 680x0 and Power PC Macs
- and Symantec THINK C 6 or 7 and Metrowerks CodeWarrior C 4.5 compilers. It's
- free and may not be sold without permission. It should be useful to anyone who
- wants to present accurately specified visual stimuli or use the Mac for
- psychometric experiments. The text file "Video synch" discusses all the ways
- of synchronizing programs to video displays and the many pitfalls to avoid.
- The TimeVideo application checks out the timing of all video devices in
- anticipation of their use in critical real-time applications, e.g. movies or
- lookup table animation. Low-level routines control video timing and lookup
- tables, display real-time movies, and implement the luminance-control
- algorithms suggested by Pelli and Zhang (1991). (D.G. Pelli and L. Zhang,
- 1991, "Accurate control of contrast on microcomputer displays." Vision
- Research, 31, 1337-1350. Reprints are available.) In particular,
- GetPixelsQuickly and SetPixelsQuickly peek and poke pixels in bitmaps and
- pixmaps, CopyBitsQuickly and CopyWindows faithfully copy between bit/pixmaps
- and the screen, WindowToEPS saves an image to disk, and SetEntriesQuickly and
- GDSetEntries load the screen's color lookup table, all without any of
- QuickDraw's color translations. High-level routines help analyze
- psychophysical experiments (e.g. graphing or maximum-likelihood fitting of
- psychometric data). Assign.c is a runtime C interpreter for C assignment
- statements, which is useful for controlling experiments and sharing
- calibration data. This collection has been continually updated since 1991.
- Many colleagues have indicated that they are using the software in their labs.
- Documentation is in the source files themselves. Many of the routines are
- Mac-specific, but some very useful routines, e.g. the luminance-control,
- statistics, maximum-likelihood fitting algorithms, and the runtime interpreter
- are written in Standard C and will work on any computer. Documentation is in
- the source files themselves. To get the latest version of the VideoToolbox
- just download “video-toolbox” electronically from a public archive:
- ftp://sumex-aim.stanford.edu/info-mac/dev/src/
- ftp://grind.isca.uiowa.edu/mac/infomac/dev/src/
- ftp://ftp.uu.net/archive/systems/mac/info-mac/dev/src/
- ftp://amug.org/pub/ftp1/info-mac/dev/src/
- ftp://wuarchive.wustl.edu/systems/mac/info-mac/dev/src/
- ftp://src.doc.ic.ac.uk/packages/mac/info-mac/dev/src/
- ftp://ftp.stolaf.edu/pub/macpsych/
- Log in as “anonymous”; any password will do. It's also on CompuServe in the
- MacDev forum's Library 4 “C and Pascal” as VIDEOT.SEA. If you're not
- electronically connected, send me your postal address and I'll mail you a
- disk.
- Denis Pelli, Professor of Neuroscience, Institute for Sensory Research, Syracuse University, Syracuse, NY 13244-5290, USA, denis_pelli@isr.syr.edu
-
- TIME VIDEO
- For each video card, TimeVideo measures the video frame rate, frequency of VBL
- interrupts (ought to be one per frame), how long it takes to load the clut,
- and how much of the screen you can fill with a real-time one-image-per-frame
- movie shown by CopyBits() or CopyBitsQuickly(). It then performs a random
- write-then-read test of the Color Lookup Table (clut). This tests the clut
- memory hardware and the software used to write and read the clut. We test
- writing by GDSetEntries(), which passes the request on to the video driver,
- and, if possible, we also test writing by SetEntriesQuickly(), which accesses
- the hardware directly. (SetEntriesQuickly supports only a few video cards.) In
- either case, the clut is read by GDGetEntries(), which passes the request on
- to the video driver. The testing is thorough; many video devices fail at least
- part of the test. All the driver errors uncovered to date appear in the
- VideoToolbox “Video synch” text file, and have been reported to the video card
- manufacturer. Add your results by emailing this file to
- denis_pelli@isr.syr.edu
-
- Errors reported by TimeVideo are usually due to bugs in the video driver
- software in the ROM of the video card or built-in video. If the bug will
- interfere with your experiments, then to use the card (or built-in video) you
- must either fix/replace the driver or bypass the driver, using
- SetEntriesQuickly to access the hardware directly (if SetEntriesQuickly
- supports that video card or built-in video). I suggest that you try replacing
- the driver, because this will keep your software hardware-independent. The
- VideoToolbox "Video synch" document explains how to fix the the Mac IIci video
- driver, patching or replacing the buggy version 0 .Display_Video_Apple_RBV1
- driver by copying the bug-free version 1 of the same driver from the Mac IIsi.
- It is very likely that an analogous approach could be used to fix/replace the
- buggy version 0, 1, and 2 .Display_Video_Apple_DAFB drivers in the Quadra 700,
- 750, and 900, by the bug-free version 3 or 5 of that driver in the Centris 650
- or the LC 475. And please report your bugs; the bug-free revised drivers are
- probably the result of our past bug reports.
-
- GLOSSARY
- A video frame is a refresh of your video screen. To show a movie, you will
- want to reload the image once per frame; the table shows how big that image
- can be, as a fraction of the screen area, and still be reloaded once per
- frame. (Some video cards have multiple video “pages” that can be switched by
- calling GDSetMode(), though I've never tried it.) A “VBL” interrupt is
- produced by your video card driver, nominally once per frame, but some video
- drivers produce more, which is poor, but not serious. (The VBLInstall.c
- program will deal with it.) Suppressed interrupts during clut updates are bad.
- It means that the driver disables the VBL interrupt for too long while it’s
- loading the clut. This will throw off any interrupt-based attempt to count
- frames. The clut is the color lookup table of your video card. Lookup table
- animation, e.g. for temporal modulation of contrast, requires that you reload
- the clut once per frame, so it’s very important that this be fast enough. The
- first call to SetEntriesQuickly() for each device is slow--a cache is filled;
- the reported times are for subsequent calls. Each video card can be in “Color”
- or “Gray” mode, as set by the Control Panel:Monitors or the Macintosh Toolbox
- call SetDepth(). In “Gray” mode all colors are transformed to
- luminance-equivalent grays. This is done by the video driver, when loading the
- clut, but only if the pixelSize≤8. TimeVideo measures the driver's color
- transformation matrix, and reports it if it is other than the identity
- transformation:
- (ROut) (1 0 0) (RIn)
- (GOut)=(0 1 0)x(GIn)
- (BOut) (0 0 1) (BIn)
- The clut tests try loading the clut serially, one entry at a time, and all at
- once; some video drivers fail the serial test. For more explanation see the
- text file called “Video synch” on the VideoToolbox disk.
-
- “GDSetEntries ... NAN ... frames”= the driver refuses to load the CLUT.
- “ok”= passed all tests.
- “!gray”= passed the color test, but is supposed to be in gray mode.
- “!color”= passed the gray test, but is supposed to be in color mode.
- “!serial”= passed when loaded all at once, but failed when loaded serially.
- “bad”= read did not equal write and the error is reported explicitly.
- We know that SetEntriesQuickly is “!serial” on the Quadra, alas.
-
- This is a SimpleText document. You can use TeachText in a pinch, but it won't
- line up the columns properly.
-
- TimeVideo version 3.6.3
- Monday, May 22, 1995.
- Compiled by Metrowerks CodeWarrior C for PowerPC, using 4-byte int and 8-byte double.
- Power Macintosh with PPC601 and no floating point unit running System 7.5.1.
- 32-bit addressing. 32-bit QuickDraw 1.39.
- Tick rate is 60.2 Hz. System-based VBL rate is 60.1 Hz.
-
- Power Macintosh “Built-In DRAM Video” (.Display_Video_Apple_Sonora version
- 6) slot 0
-